/* common.js */
/*=== SPECIFIC TO THIS STORE ===*/
var agt=navigator.userAgent.toLowerCase();
var is_opera = (agt.indexOf("opera") != -1);
var is_safari = (agt.indexOf("safari") != -1);
if(is_safari) {
    var isAppleWebKit = (agt.indexOf('applewebkit') != -1);
    var appleWebKitVersion = ( (isAppleWebKit) ? parseFloat( agt.substring( agt.indexOf('applewebkit/') + 12) ) : -1 );
    var safari_vminor = parseFloat( agt.substring( agt.lastIndexOf('safari/') + 7 ) );
    var safari_vmajor = parseInt(safari_vminor);
}
/*=== SPECIFIC TO THIS STORE ===*/


function addEvent(object, type, handler){
/*
    Add any event handler to the browser, such as an onload function.
    Stable and cross-browser safe.
        object = where to attach event; >window< almost every time, though not necessarily
        type = what kind of handler to add, eg: "load"
        handler = the code (anonymous function) that will be called when event is fired.
*/
	if (object.addEventListener)
		object.addEventListener(type, handler, false);
	else if (object.attachEvent)
		object.attachEvent(['on',type].join(''),handler);
	else
		object[['on',type].join('')] = handler;
}

function findElement(item) {
/*
    Find any element by ID in a version 4+ browser.
    Returns the element.
*/
    return document.getElementById ? document.getElementById(item) : document.all[item];
}

function findElementInTags(thetag,boolstr,coll) {
/*
    Find one element in a set of tags using any attribute (not just id)
        thetag = what tag collection to use, such as 'IMG'
        boolstr = what test to give each tag, for example "className.indexOf('name') > -1"
        coll = what collection to start with, instead of >document<.getElementsByTagName
    Returns first item found.
*/
    if(coll)
        var tagColl = coll.getElementsByTagName(thetag);
    else
        var tagColl = document.getElementsByTagName(thetag);
    var theEl = false;
    for(i=0;i<tagColl.length;i++) {;
        if(eval("tagColl[i]." + boolstr)) {
            theEl = tagColl[i];
            break;
        }
    }
    return theEl;
}

function findElementsInTags(thetag,boolstr,coll) {
/*
    Find ALL elements in a set of tags using any attribute (not just id)
        thetag = what tag collection to use, such as 'IMG'
        boolstr = what test to give each tag, for example "className.indexOf('name') > -1"
        coll = what collection to start with, instead of >document<.getElementsByTagName
    Returns array of all items found.
*/
    if(coll)
        var tagColl = coll.getElementsByTagName(thetag);
    else
        var tagColl = document.getElementsByTagName(thetag);
    var elArray = new Array();
    for(i=0;i<tagColl.length;i++) {;
        if(eval("tagColl[i]." + boolstr)) {
            elArray[elArray.length] = tagColl[i];
        }
    }
    if(elArray.length == 0) elArray = false;
    return elArray;
}

function limitChars(str, lim, ml, mltext) {
/*
    Limits a string to [lim] character length.  Optional "more" link.
        str = string to modify
        lim = string length limit
        ml = more link (false if no, some url if true)
        mltext = more link text (false if no, some text if true)
*/
		if(!str) return str;
		
    var newstr = '';
    for(var i=0; i<lim; i++) {
        newstr += str.charAt(i);
    }
    if(str.length > lim)
        newstr += "... ";

    if(ml && mltext){
        mltext = replace(mltext,'>','&gt;');
        mltext = replace(mltext,'<','&lt;');
        newstr += '<span class="more"><a href="' + ml + '">' + mltext + '</a></span>';
    }
    return newstr;
}

function replace(string,text,by) {
/*
    Replaces text in a string.
        string = string to manipulate
        text = char or string to find
        by = char or string to substitute in
*/
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

function remove(s, t) {
/*
    Remove all occurrences of a token in a string
        s  string to be processed
        t  token to be removed
    Returns new string
*/
  i = s.indexOf(t);
  r = "";
  if (i == -1) return s;
  r += s.substring(0,i) + remove(s.substring(i + t.length), t);
  return r;
}



/* sc-cross-sell.js */
/* NOTES

class="nopop" will keep any link from doing the popup
names are retrieved from links
rows are id="sc_cross_sell_names" and "sc_cross_sell_images"

*/

var csDiv, csWin, csItems = new Array();

var csWinWidth = csWinWidth || 750;
var csWinHeight = csWinHeight || 600;
var csWinCaptionLimit = csWinCaptionLimit || 400;
var csWinMoreText = csWinMoreText || 'Read More >>';

var csWinURL = csWinURL || "advanced-cross-sell-popup.html";
// var storeID = "yhst-49241233419632";

var csWinParams = 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1';

function crossSellItem(num, csInfo) {
/*
    Cross-sell item 'class'.
*/
    this.name = csInfo[0][num];
    this.image = csInfo[1][num];
    this.price = csInfo[2][num];
    this.sale = csInfo[3][num];
    this.caption = csInfo[4][num];
    this.order = csInfo[5][num];
    this.shortcaption = (csWinCaptionLimit == 0) ? csInfo[4][num] : limitChars(csInfo[4][num],csWinCaptionLimit,'javascript:showCaption('+num+');',csWinMoreText);
}

function createCSPopupHandler(el,i,pageID) {
/*
    Actually writes onclick event handler for all <A> tags inside cross sell div.
*/
    if(!(el.className.indexOf("nopop") > -1))
        el.onclick = function() {
            /*
                Open cross-sell window (popup.html) when cross-sell item is clicked.
            */
                var w = csWinWidth, h = csWinHeight;
                if (document.all || document.layers) {
                    w = screen.availWidth;
                    h = screen.availHeight;
                }
                var leftPos = (w-csWinWidth)/2
                var topPos = (h-csWinHeight)/2;
                var fullParams = csWinParams+',width='+csWinWidth+',height='+csWinHeight+',left='+leftPos+',top='+topPos;
                csWin = window.open(csWinURL+'?num='+i+'&pageid='+pageID+'&storeid='+storeID,'csWin',fullParams);
                if(window.focus) csWin.focus();
                if(csWin) return false;
        };
}

function setCSHandlers() {
/*
    Prepares to write onclick handler for all <A> tags inside cross sell div.
*/
    //once for 'image' links
    var csLinks = new Array();
    var imageDivs = findElementsInTags("div","className.indexOf('thumb') > -1",csDiv);
    for(var i=0; i<imageDivs.length; i++)
        csLinks[i] = imageDivs[i].getElementsByTagName('a')[0];
    for(var i=0; i<csLinks.length; i++) {
        var el = csLinks[i];
        var ahref = imageDivs[i].getElementsByTagName('a')[0].href;
        var ahrefsmall = ahref.substr(ahref.lastIndexOf("/")+1);
        var pageID = ahrefsmall.split(".")[0];
        createCSPopupHandler(el,i,pageID);
    }
    //once for 'name' links
    var csLinks2 = new Array();
    var nameDivs = findElementsInTags("div","className.indexOf('name') > -1",csDiv);
    for(var i=0; i<nameDivs.length; i++)
        csLinks2[i] = nameDivs[i].getElementsByTagName('a')[0];
    for(var i=0; i<csLinks2.length; i++) {
        var el = csLinks2[i];
        var ahref = nameDivs[i].getElementsByTagName('a')[0].href;
        var ahrefsmall = ahref.substr(ahref.lastIndexOf("/")+1);
        var pageID = ahrefsmall.split(".")[0];
        createCSPopupHandler(el,i,pageID);
    }
}

function csNames() {
/*
    Gathers all cross-sell item names from cross-sell div.
    Returns array of the names based on <div class="name">
*/
    var allCSNames = new Array();
    var allCSNameDivs = findElementsInTags("div","className.indexOf('name') > -1",csDiv);
    for(var i=0; i<allCSNameDivs.length; i++)
        allCSNames[i] = allCSNameDivs[i].getElementsByTagName('a')[0].innerHTML;
    return allCSNames;
}

function csGetInfo(infotype) {
/*
    Gathers all cross-sell item info of one type (infotype) from cross-sell div.
    Returns array of the innerHTML of <div class="infotype">
        infotype = some classname, such as 'price'
*/
    var thisGroup = new Array();
    var allTheDivs = findElementsInTags("div","className.match(/(^| )" + infotype + "($| )/)",csDiv);
    for(var i=0; i<allTheDivs.length; i++)
        thisGroup[i] = allTheDivs[i].innerHTML;
    return thisGroup;
}

function initCrossSell() {
/*
    1. Gathers all cross-sell item info from cross-sell div.
    2. Creates global array csItems from class crossSellItem().
    3. Sets onclick handlers on all links in cross-sell div.
*/
    csDiv = findElement("sc_cross_sell");

    //step 1
    var csInfo = new Array();
    csInfo[0] = csNames();
    csInfo[1] = csGetInfo('image');
    csInfo[2] = csGetInfo('price');
    csInfo[3] = csGetInfo('sale');
    csInfo[4] = csGetInfo('caption');
    csInfo[5] = csGetInfo('order');

    //step 2
    for(var i=0; i<csInfo[0].length; i++) {
        csItems[csItems.length] = new crossSellItem(i,csInfo);
    }

    //step 3
    setCSHandlers();

    return false;
}


/*
    Initialize links and create item array.
*/
addEvent(window,"load",function() {
	initCrossSell();
});



/* scFramework.js and scImageEnlarge.js */
/*
This file contains all commonly used functions by Solid Cactus
version: 1.0
last modified: Sunil Lukose
modified date: 08/31/06
*/

/*
1. SC.init() - call all functions that needs to be initialized in this function
Notes: This function should be called just before the end </body> tag

2. SC.getTagArray - Returns array of elements
Syntax - SC.getTagArray(sTagName,oDomElement)
e.g. - SC.getTagArray("a",oObj);
Notes: if domEement is not supplied it defaults to document

3. SC.setAttributes - sets attributes on a dom Element
Syntax - SC.setAttributes(oDomElement,sAttrList)
e.g. - SC.getTagArray(oObj,"width","500px","top","0");
NOTES: attributes should be in name value pair you can pass one or more sets of attributes

4. SC.getObj(sObjId) - Returns a object for the passed ID
e.g. - SC.getObj("contetns");
*/

function SC() {};

var SCClass=SC.prototype;
var scClass = new SC();

SC.getTagArray = function(sTagName,oObj){
	aTagArray = null;
	oObj = (oObj) ? oObj : document;
	if(oObj.getElementsByTagName)
		aTagArray = oObj.getElementsByTagName(sTagName);
	return aTagArray;
}

SC.setAttributes = function(oObj){
	if(arguments.length > 1){
		for(var i=1; i<arguments.length; i=i+2){
			oObj[arguments[i]] = arguments[i+1];
		}
	}
}

SC.getObj = function(sObjId){ 
	var oObj = null;
  if (document.getElementById) 
      oObj = document.getElementById(sObjId);
  else if (document.all) 
      oObj = document.all[sObjId];
  else if (document.layers) 
      oObj = document.layers[sObjId];
	return oObj;
}

SC.createElement = function(sTagName){
	var oObj = document.createElement(sTagName);
	if(arguments.length > 1){
		for(var i=1; i<arguments.length; i=i+2){
			if(arguments[i] == "txt"){
				var oText = document.createTextNode(arguments[i+1]);
				oObj.appendChild(oText);		
			}else
				oObj[arguments[i]] = arguments[i+1];
		}
	}
	return oObj;
}

SC.appendElement = function(oAppendTo){
	var oAppendTo = (oAppendTo) ? oAppendTo : document.body;
	if(arguments.length > 1){
		for(var i=1; i<arguments.length; i++)
			oAppendTo.appendChild(arguments[i]);
	}
}

SC.createAppend = function(sTagName,oObj){
	var oObj = (oObj)? oObj : document.body;
	var oTagObj = document.createElement(sTagName);
	if(arguments.length > 2){
		for(var i=2; i<arguments.length; i=i+2){
			oTagObj[arguments[i]] = arguments[i+1];
		}
	}	
	oObj.appendChild(oTagObj);
}

SC.showHide = function(oObj,sDisplay){
	oObj.style.display = sDisplay;
}

String.prototype.trim=function() {
	if (this==null) return null;
	return this.trimEnd(this.trimStart());
}

String.prototype.trimEnd=function() {
	if (this==null) return null;
	var re = /((\s*\S+)*)\s*/;
	return this.replace(re, "$1");	
}

String.prototype.trimStart=function() {
	if (this==null) return null;
	var re = /\s*((\S+\s*)*)/;
	return this.replace(re, "$1");
}

var Y,X; function o0(O0){var l0=SC.getTagArray("\x53\x45LE\x43T"); for (var i=0; i<l0.length; i++){if (O0=="sh\x6fw"){var i0=l0[i].className.replace("\x68\x69deSelec\x74",""); SC.setAttributes(l0[i],"cla\x73sNa\x6de",i0.trim( )); }else if (l0[i].className.indexOf("\x68\x69deSel\x65ct")==-1){var i0=(l0[i].className)?l0[i].className+"\x20\x68ideSel\x65ct": "\150\151\x64eSele\x63t"; SC.setAttributes(l0[i],"\x63l\x61ssName",i0); }}}function scPreviewInsets( ){var I0=SC.getObj("s\x63Im\x67\102\x6fx-i\x6esetPr\x65vi\x65w"); if (arguments.length>0){var o1=SC.getTagArray("img",I0); for (var i=0; i<o1.length; i++){if (i==arguments[0])SC.showHide(o1[i],"\x62\x6cock"); else SC.showHide(o1[i],"\156\157\x6ee"); }O1(I0,"\x62l\x6fck",0,0); }else {SC.showHide(I0,"\x6e\x6fne"); }}function l1( ){SC.showHide(X,"n\x6fne"); SC.showHide(Y,"none");o0("sh\x6fw"); }function scImgEnlargeInit( ){var i1=SC.getObj("scP\x61ge-\x69nsets"); var scMainImage=SC.getObj("\163\x63M\x61inImag\x65"); if (i1 || scMainImage || scMultiMain){SC.I1( ); Y=SC.getObj("\163\x63I\x6dgB\x6fx"); X=SC.getObj("\163cW\x72ap\x70e\x72"); if (X)X.onclick=l1; }}function o2( ){var O2=0,l2=0,i2=0,I2=0; var o3=document.body; var O3=document.documentElement; if (typeof(window.innerWidth)=='nu\x6dbe\x72'){O2=window.innerWidth-027; l2=window.innerHeight-027; }else if (O3 && O3.clientWidth){O2=O3.clientWidth; l2=O3.clientHeight; }else if (o3 && o3.clientWidth){O2=o3.clientWidth; l2=o3.clientHeight; }if (O3 && O3.scrollWidth)I2=O3.scrollWidth; else if (o3.scrollWidth)I2=o3.scrollWidth; else if (o3.offsetWidth)I2=o3.offsetWidth; if (O3 && O3.scrollHeight)i2=O3.scrollHeight; if (o3.scrollHeight && (o3.scrollHeight>i2))i2=o3.scrollHeight; if (o3.offsetHeight && (o3.offsetHeight>i2))i2=o3.offsetHeight; if (i2<l2)i2=l2; if (I2<O2)I2=O2; this.l3=i2; this.i3=I2; this.I3=l2; this.o4=O2; }function O4( ){var o3=document.body; var O3=document.documentElement; var l4=0,i4=0; if (typeof(window.pageYOffset)=='numb\x65\x72'){i4=window.pageYOffset; l4=window.pageXOffset; }else if (o3 && (o3.scrollLeft || o3.scrollTop)){i4=o3.scrollTop; l4=o3.scrollLeft; }else if (O3 && (O3.scrollLeft || O3.scrollTop)){i4=O3.scrollTop; l4=O3.scrollLeft; } this.x=l4; this.y=i4; }function O1(I4,display,o4,I3,top,left){I4.style.top=(top)?top:I4.style.top; I4.style.left=(left)?left:I4.style.left; I4.style.height=(I3==0)?"\x61\x75to":I3; I4.style.width=(o4==0)?"auto":o4; SC.showHide(I4,display); }function scWinResize( ){var i1=SC.getObj("\x73c\x50age-ins\x65ts"); var scMainImage=SC.getObj("scMa\x69nIm\x61ge"); if (i1 || scMainImage || scMultiMain){if (Y.style.display=="block"){var o5=SC.getTagArray("img",Y); var O5=(SC.getObj("scIm\x67Ti\x74le"))?SC.getObj("\x73\x63ImgTitl\x65").firstChild.nodeValue: ""; var l5=SC.createElement("\x61","href",o5[0].src,"t\x69tle",O5); scShowImg(l5,o5[0].height,o5[0].width);}}}function i5(I5){var o6=I5; if (o6.indexOf("\x66\x75nctio\x6e anon\x79mous")>-1){o6=o6.replace(/\x0a/g,""); o6=o6.replace("fu\x6ecti\x6fn anon\x79mous(\x29{","").replace("\x7d",""); }return o6; }SC.I1= function ( ){var i1=SC.getObj("\x73\x63\120\x61g\x65-ins\x65ts"); var O6=SC.getObj("s\x63Img\x4fveral\x6c"); var l6=SC.createElement("\x64\x69v","\x69d","\x73\x63ImgBo\x78"); var i6=SC.createElement("\x64\x69\166","classNam\x65","\x72\x65lativ\x65Pos"); var I6=SC.createElement("a","txt","x","href","\x6a\x61vascr\x69pt:vo\x69d(0);","c\x6cas\x73Name","\x63\x6cose","titl\x65","\x63\x6cose"); I6.onclick=l1; SC.appendElement(i6,I6); SC.createAppend("div",i6,"i\x64","scImgB\x6fx-m\x61inImg"); if (i1){var o7=SC.createElement("\x64iv","\x63\x6cassName","absolut\x65Pos"); var O7=i1.cloneNode( true); for (var i=0; i<O7.childNodes.length; i++){if (O7.childNodes[i].nodeName!="A")O7.replaceChild(document.createTextNode(""),O7.childNodes[i]); }SC.setAttributes(O7,"\x69d","sc\x49m\x67Box-in\x73etPrev\x69ew"); SC.appendElement(o7,O7); var l7=O7.cloneNode( true); SC.setAttributes(l7,"id","scIm\x67\x42ox-in\x73ets"); var i7=SC.createElement("a","\x74\x78t","\x43\x4cOSE","hr\x65f","javas\x63r\x69pt:voi\x64(0);","\x63l\x61ssName","abs\x43los\x65","tit\x6ce","\x43\x4cOSE"); i7.onclick=l1; var I7=SC.getTagArray("\x61",l7); for (var i=0; i<I7.length; i++){var oLink=I7[i]; eval("\x6f\x4cink.o\x6emouse\x6fver =\x20func\x74ion()\x7b\011sc\x50rev\x69ew\x49ns\x65ts\x28"+i+"\x29\x7d;"); oLink.onmouseout=scPreviewInsets; for (var j=0; j<oLink.childNodes.length; j++)oLink.replaceChild(document.createTextNode(i+1),oLink.childNodes[j]); }SC.appendElement(l7,i7); }SC.appendElement(l6,i6); if (i1){SC.appendElement(i6,o7); SC.appendElement(l6,l7); }SC.createAppend("div",O6,"\x69\x64","\x73cW\x72apper","title","C\x6cic\x6b To Clo\x73e"); SC.appendElement(O6,l6); };function scShowImg(I4,I3,o4){var o8=SC.getObj("scImgBox\x2dma\x69nImg"); if (o8){var O8=SC.getObj("sc\x49mgT\x69tle"); if (O8)O8.parentNode.removeChild(O8); if (I4.title){var l8=SC.createElement("\x64\x69v","\164\170\x74",I4.title,"\x69\x64","sc\x49\x6d\x67\x54\x69t\x6ce"); o8.parentNode.insertBefore(l8,o8); var O8=SC.getObj("scImgTi\x74l\x65"); O8.style.width=o4+"\x70\x78"; }var i8=SC.createElement("\151\155\x67"); SC.setAttributes(i8,"\x73rc",I4.href,"\x77i\x64th",o4,"height",I3); o8.className=""; i8.onload= function ( ){ this.parentNode.className="\x73ch\x69debg";};var I8=SC.getTagArray("im\x67",o8); if (I8.length>0){var o9=I8[0]; o8.replaceChild(i8,o9); }else SC.appendElement(o8,i8);O1(Y,"block",0,0,"\0551000px","\x2d\x31000p\x78"); var O9=new o2( ); var l9=new O4( ); var i9=Y.offsetHeight; var I9=Y.offsetWidth; var oa=(i9>O9.I3)?i9-O9.I3+024: 0; var Oa=(i9>O9.l3)?(O9.l3+oa)+"\160\x78":O9.l3+"px"; var la=(I9>O9.o4)?(O9.i3+(I9-O9.o4)+050)+"\x70\x78": "\x31\x300%"; var top=(O9.I3-i9>0 || (l9.y+i9)<O9.l3)?((O9.I3-i9)/2)+l9.y: ((O9.l3-i9)>0)?O9.l3-i9: 024; var left=(O9.o4-I9>0)?((O9.o4-I9)/2): 024; top=(top<0)?024:Math.round(top); left=(left<0)?024:Math.round(left); o0("\x68i\x64e"); O1(Y,"\x62l\x6f\143\x6b",0,0,top+"\x70\x78",left+"p\x78"); O1(X,"\x62l\x6f\143\x6b",la,Oa,0,0); }else {window.location.href=I4.href; }}


/* fixPNG.js */
var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

function fixPNG(myImage) 
{
    if ((version >= 5.5) && (version < 7) && (document.body.filters)) 
    {
       var imgID = (myImage.id) ? "id='" + myImage.id + "' " : ""
	   var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : ""
	   var imgTitle = (myImage.title) ? 
		             "title='" + myImage.title  + "' " : "title='" + myImage.alt + "' "
	   var imgStyle = "display:inline-block;" + myImage.style.cssText
	   var strNewHTML = "<span " + imgID + imgClass + imgTitle
                  + " style=\"" + "width:" + myImage.width 
                  + "px; height:" + myImage.height 
                  + "px;" + imgStyle + ";"
                  + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
                  + "(src=\'" + myImage.src + "\', sizingMethod='scale');\"></span>"
	   myImage.outerHTML = strNewHTML	  
    }
}


/* IE sfhover code */
sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

