// The rollover script for an image
//=================================
function rollImage(imageName,imageScr){
    //if(!editMode){
        var i = document.images[imageName]
        i.oSrc = i.src;
        i.src = imageScr;
    //}
}
// The restore rollover script for an image
//=========================================
function restoreImage(imageName){
    //if(!editMode) {
        var i = document.images[imageName]
        i.src = i.oSrc;
    //}
}
// For creating a PopUp window
//============================
function openWindow(pageUrl,pageName,params){
    window.open(pageUrl,pageName,params)
}
// For all gallery Pages
//======================
function clickImg(obj){
    if(document.all){
        if(obj && window.event.srcElement.tagName=="TD")obj.children(0).click();
    }
}
function openPhoto(vPageURL, objID, uID){
    location.assign(vPageURL +"?objID="+ objID +"&pictureID="+ uID);
}
function openAlbum(vPageURL, objID, folderStr){
    location.assign(vPageURL +"?objID="+ objID +"&filter="+ folderStr);
}

// For all forms
//====================================================================
function submitForm(frmObj){
    var errorList = ""
    var elArray = frmObj.elements
    var errorMessage = "Sorry, the following are required:\n"
    if(frmObj.errorMessage) errorMessage = frmObj.errorMessage +"\n"
    for(var i=0; i<elArray.length; i++){
       if(elArray[i].isRequired && elArray[i].isRequired=="yes"){
           if(elArray[i].value==""){
               if(elArray[i].displayName){
                   errorList += elArray[i].displayName +"\n"
                }else{
                   errorList += elArray[i].name +"\n"}
           }
       }
    }
    if(errorList == "") frmObj.submit();
    else alert(errorMessage +""+ errorList);
}

// Tempalte Object Methods
// ==================================================================
function focustextBox(obj, defaultStr){
	if(obj.value == defaultStr)	obj.value = ""
}

function TemplateNewsletterSignup(obj){
	var formObj = obj;
	var nameStr = formObj.elements[0].value;
	var emailStr = formObj.elements[1].value;
	if(nameStr!="" && emailStr!="" && nameStr!="Name" && emailStr!="Email"){
		
		var progressBox = obj.getElementsByTagName("SPAN")[0];
		var progressBar = progressBox.getElementsByTagName("IMG")[0];
		progressBox.style.display = "block"

		// XML Response
		// ============
		var xmlHttp = AJAXcreateXMLHttpObj();
		xmlHttp.onreadystatechange = function(){
			if(xmlHttp.readyState==1){
				progressBar.width = "20"
			}
			if(xmlHttp.readyState==2){
				progressBar.width = "40"
			}
			if(xmlHttp.readyState==3){
				progressBar.width = "60"
			}
			if(xmlHttp.readyState==4){
				progressBar.width = "80"
				
				var xmlDoc = xmlHttp.responseXML.documentElement;
				try{
					var err = xmlDoc.getElementsByTagName("error")[0].childNodes[0].nodeValue;
					alert(err);
				}catch(e){
					alert("Email added, please check your mailbox for further instructions.");
				}
				progressBox.style.display = "none"
			}
		}
			
		// XML Post
		// ========
		var postXMLStr = "<AdminAction>"
					   + "<ActionName>AddNewMember</ActionName>"
					   + "<SystemAutoReply>yes</SystemAutoReply>"
					   + "<AllowMultiple>no</AllowMultiple>"
					   + "<Name>"+ escape(nameStr) +"</Name>"
					   + "<Email>"+ escape(emailStr) +"</Email>"
					   + "</AdminAction>";
		var postXMLobj = AJAXcreateXMLobj(postXMLStr);
		xmlHttp.open("POST", "/AddressBook/API/AddressBookAPI.asp", true);
		xmlHttp.send(postXMLobj);	
				
	}else{
		if(nameStr=="" || nameStr=="Name"){
			formObj.elements[0].style.border = "1px solid red";
		}
		if(emailStr=="" || emailStr=="Email"){
			formObj.elements[1].style.border = "1px solid red";
		}
	}
}

// AJAX Methods
// ==================================================================
function AJAXcreateXMLHttpObj(){
	var xmlHttpObj;
	try{  // Firefox, Opera 8.0+, Safari, IE 7
		xmlHttpObj = new XMLHttpRequest();
	}catch(e){  // Internet Explorer 6 or below
		try{
			xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				xmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				alert(e.message);
			}
		}
	}
	return xmlHttpObj
}

function AJAXcreateXMLobj(postXMLStr){
	var xmlDoc;
	try{ //Internet Explorer
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(postXMLStr);
	}catch(e){
		try {//Firefox, Mozilla, Opera, etc.
			var parser = new DOMParser();
			xmlDoc = parser.parseFromString(postXMLStr,"text/xml");
		}catch(e){
			alert(e.message);
		}
	}
	return xmlDoc;
}

// For Flash Objects
//============================
function writeFlash(swfScr, swfWidth, swfHeight, swfVersion, flashID, bgColor, wmode){
	document.write('<OBJECT width="'+ swfWidth +'" height="'+ swfHeight +'" id="'+ flashID +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+ swfVersion +'">\n');
	document.write('<PARAM name="movie" value="'+ swfScr  +'">\n');
	document.write('<PARAM name="quality" value="high">\n');
    document.write('<PARAM name="menu" value="false">\n');
	document.write('<PARAM name="wmode" value="'+ wmode +'">\n');
	document.write('<PARAM name="scale" value="exactfit">\n');
    document.write('<PARAM name="bgcolor" value="'+ bgColor +'">\n');
	document.write('<EMBED src="'+ swfScr  +'" width="'+ swfWidth +'" height="'+ swfHeight +'" id="'+ flashID +'" bgcolor="'+ bgColor +'" wmode="'+ wmode +'" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash"></EMBED>\n');
	document.write('</OBJECT>');
}
// For Java Objects
//============================
function writeJava(classFile, codeBase, javaWidth, javaHeight){
	document.write('<OBJECT width="'+ javaWidth +'" height="'+ javaHeight +'" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="http://java.sun.com/products/plugin/1.4/jinstall-14-win32.cab#Version=1,4,0,mn">\n');
	document.write('<PARAM name="code" value="'+ classFile +'">\n');
	document.write('<PARAM name="codebase" value="'+ codeBase +'">\n');
	document.write('<PARAM name="type" value="application/x-java-applet;jpi-version=1.4">\n');
	document.write('<PARAM name="scriptable" value="true">\n');
	document.write('<EMBED code="'+ classFile +'" codebase="'+ codeBase +'" width="'+ javaWidth +'" height="'+ javaHeight +'" type="application/x-java-applet;jpi-version=1.4" pluginspage="http://java.sun.com/j2se/1.4/download.html"></EMBED>\n');
	document.write('</OBJECT>');
}
// For Quicktime Objects
//============================
function writeQuicktime(QTsrc, QTwidth, QTheight){
	document.write('<OBJECT width="'+ QTwidth +'" height="'+ QTheight +'" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">\n');
	document.write('<PARAM name="src" value="'+ QTsrc +'">\n');
	document.write('<PARAM name="controller" value="true">\n');
	document.write('<EMBED src="'+ QTsrc +'" width="'+ QTwidth +'" height="'+ QTheight +'" controller="true" pluginspage="http://www.apple.com/quicktime/"></EMBED>\n');
	document.write('</OBJECT>');
}

// For Horizontal Menu
//========================
function build_Menu_h(menuID){
	var menuDivObj = document.getElementById(menuID);
	var menuULObj = menuDivObj.getElementsByTagName("UL")[0];
	var linkObj = menuDivObj.getElementsByTagName("A")
	for (var a=0; a<linkObj.length; a++){
		if (linkObj[a].parentNode.parentNode.id == "Menu"){
			linkObj[a].style.width = linkObj[a].childNodes[0].offsetWidth+"px";
		}
	}
	var ultags = menuULObj.getElementsByTagName("UL");
	for (var t=0; t<ultags.length; t++){
		if (ultags[t].parentNode.parentNode.id == "Menu"){
			ultags[t].style.top = ultags[t].parentNode.offsetHeight+"px";
			ultags[t].parentNode.getElementsByTagName("a")[0].className = "mainfoldericon";
		}else{
			ultags[t].style.left = ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px";
			ultags[t].parentNode.getElementsByTagName("a")[0].className = "subfoldericon";
		}
		ultags[t].parentNode.onmouseover=function(){
			this.getElementsByTagName("ul")[0].style.visibility = "visible";
		}
		ultags[t].parentNode.onmouseout=function(){
			this.getElementsByTagName("ul")[0].style.visibility = "hidden";
		}
	}
}

// For Vertical Menu
//======================
function build_Menu_v(menuID){
	var menuDivObj = document.getElementById(menuID);
	var menuULObj = menuDivObj.getElementsByTagName("UL")[0];
	var ultags = menuULObj.getElementsByTagName("UL");
	for (var t=0; t<ultags.length; t++){
		ultags[t].parentNode.getElementsByTagName("A")[0].className = "subfoldericon";
		if (ultags[t].parentNode.parentNode.id == "Menu"){
			ultags[t].style.left = ultags[t].parentNode.offsetWidth + "px";
		}else{
			ultags[t].style.left = ultags[t-1].getElementsByTagName("A")[0].offsetWidth+"px";
		}
		ultags[t].parentNode.onmouseover = function(){
			this.getElementsByTagName("UL")[0].style.display = "block";
		}
		ultags[t].parentNode.onmouseout = function(){
			this.getElementsByTagName("UL")[0].style.display = "none";
		}
	}
	for (var t=ultags.length-1; t>-1; t--){
	  ultags[t].style.visibility = "visible"
	  ultags[t].style.display = "none"
	}
}
// Change CCS on Object
function swapCss(obj, cssName){
    obj.className = cssName;
}

// Functions for the products
//===========================
// uID | productPrice | wasPrice | ProductID | addToBasketLink | productDetailsLink
function setProduct(obj, uID){
    var productDiv = document.getElementById("product_"+uID);
    var values     = String(obj.value).split("|");
    var productPrice       = values[1];
    var wasPrice           = values[2];
    var addToBasketLink    = values[4]+"?actionName=AddToBasket&itemCode="+values[3];
    var productDetailsLink = values[5];
    //alert(values)
    var productEl  = productDiv.getElementsByTagName("SPAN"); //SPANS
    for(var i=0; i<productEl.length; i++){
        if(productEl[i].id=="productPrice") productEl[i].innerHTML = productPrice;
        if(productEl[i].id=="wasPrice") productEl[i].innerHTML = wasPrice;
    }
    var productEl  = productDiv.getElementsByTagName("DIV");  //DIVS
    for(var i=0; i<productEl.length; i++){
        if(productEl[i].id=="wasPrice_DIV") productEl[i].style.display = (values[2]=="0.00")? "none" : ""
    }
    var productEl  = productDiv.getElementsByTagName("A");    //LINKS
    for(var i=0; i<productEl.length; i++){
        if(productEl[i].id=="addToBasketLink") productEl[i].href = addToBasketLink;
        if(productEl[i].id=="productDetailsLink") productEl[i].href = productDetailsLink;
    }
}

// Shopping Basket Functions
//===========================
function doUpdateBasket(action,itemCode) {
	document.BasketForm.actionName.value = action;
    document.BasketForm.itemCode.value = itemCode;
	document.BasketForm.submit();
}
function ShowHide(uID,oBj){
	if(oBj.checked){
		doUpdateBasket('ShowProduct',uID)
	} else {
		doUpdateBasket('HideProduct',uID)
	}
}

// Checkout Page
//==============
function checkOut(){
	document.paymentForm.actionName.value = "Checkout"
	document.paymentForm.submit();
}
function next(){
	document.paymentForm.submit();
}
function addAddress(){
    document.paymentForm.actionName.value = "AddAddress"
	document.paymentForm.submit()
}
function EditAddress(){
    document.paymentForm.actionName.value = "EditAddress"
	document.paymentForm.submit()
}
function UpdateAddress(){
    document.paymentForm.actionName.value = "UpdateAddress"
	document.paymentForm.submit()
}
function DeleteAddress(){
    document.paymentForm.actionName.value = "DeleteAddress"
    document.paymentForm.submit()
}
var dialogWin = new Object()
var paymentWinStatus = "closed" // ("closed" | "open")

function openDGDialog(url, width, height) {
	if (!dialogWin.win || (dialogWin.win && dialogWin.win.closed)) {
        // Dimm out Screen
        // ===============
        var dimmer = document.getElementById("dimmer");
            dimmer.style.display = "";

        // Setup Payment Window
        // ====================
		dialogWin.url = url
		dialogWin.width = width
		dialogWin.height = height
		dialogWin.name = (new Date()).getSeconds().toString()
		dialogWin.left = (screen.width - dialogWin.width) / 2
		dialogWin.top = (screen.height - dialogWin.height) / 2
		var attr = "left="+ dialogWin.left +",top="+ dialogWin.top +",resizable=no,location=yes,status=yes,width="+ dialogWin.width +",height="+ dialogWin.height

        // Open Payment Window
        // ===================
		dialogWin.win=window.open(dialogWin.url, dialogWin.name, attr);
		dialogWin.win.focus();

        // Set Window status
        // =================
        paymentWinStatus = "open";
	} else {
		dialogWin.win.focus()
	}
}
function checkModal() {
	setTimeout("finishChecking()", 50)
	return true
}
function finishChecking() {
	if (dialogWin.win && !dialogWin.win.closed) {
		dialogWin.win.focus() 
	}
}
function monitorModal() {
	var intervalObj = window.setInterval("keepChecking()", 50)
}
function keepChecking() {
    if(paymentWinStatus=="closed") {
        // Window not open (yet)
    } else if(paymentWinStatus=="open" && (dialogWin.win && dialogWin.win.closed)) {
        CancelAction();
    }
}

// Payment Actions
// ================
function CancelAction(){
    // Clear Screen
    // ============
    var dimmer = document.getElementById("dimmer");
        dimmer.style.display = "none";

    // Clear Staus
    // ===========
    paymentWinStatus = "closed"

    // Clear Object
    // ============
    alert("You closed the window without making a payment, please try again.");
}

function ApplyAction(){
    // Clear Screen
    // ============
    var dimmer = document.getElementById("dimmer");
        dimmer.style.display = "none";

    // Clear Staus
    // ===========
    paymentWinStatus = "closed"

    // Do Action
    // =========
    //alert("Thank you");
    checkOut();
}



// Analytics
// =========
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function pageHit(ASPreferrer){
    function flashEnabled(){
        var f=false,n=navigator;
        if(n.plugins && n.plugins.length){
           for (var i=0;i<n.plugins.length;i++){
               if (n.plugins[i].name.indexOf('Shockwave Flash')!=-1){
                  f = true;
                  break;
               }
           }
        }else if (window.ActiveXObject){
           for(var i=10;i>=2;i--){
               try {
                   var fl=eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+i+"');");
                   if(fl){
                       f = true;
                       break;
                   }
               }catch(e){}
           }
        }
        return f;
    }
    // Information Collection
    var hitSrc = "/SoftPage/stats_RegisterHit.asp?an=hit"
        // URL
        hitSrc = hitSrc+"&pr="+ document.location.protocol;
        hitSrc = hitSrc+"&do="+ document.domain;
        hitSrc = hitSrc+"&pn="+ document.location.pathname;
        // Referer
        //hitSrc = hitSrc+"&rf="+ escape(document.referrer);
	hitSrc = hitSrc+"&rf="+ escape(ASPreferrer);
        // Screen
        hitSrc = hitSrc+"&sw="+ screen.width;
        hitSrc = hitSrc+"&sh="+ screen.height;
        hitSrc = hitSrc+"&cd="+ screen.colorDepth;
        // Navigator
        hitSrc = hitSrc+"&na="+ BrowserDetect.browser +" "+ BrowserDetect.version +" on "+ BrowserDetect.OS;
        hitSrc = hitSrc+"&ce="+ navigator.cookieEnabled;
        hitSrc = hitSrc+"&cu="+ navigator.cpuClass;
        // Language
        hitSrc = hitSrc+"&bl="+ navigator.browserLanguage;
        // Applications
        hitSrc = hitSrc+"&je="+ navigator.javaEnabled();
        hitSrc = hitSrc+"&fe="+ flashEnabled();

    // Log Hit

    var imgObj = new Image(1,1);
    if(document.location.protocol=="https:"){
        imgObj.src = "https://"+ document.domain +""+ hitSrc
    }else if(document.location.protocol=="http:"){
        imgObj.src = "http://"+ document.domain +""+ hitSrc
    }else{
        imgObj.src = "/AdminImages/pixel.gif"
    }
    //location.href = "http://"+ document.domain +""+ hitSrc
    return false;
}

//*************************************************
// EVENT MANAGER - REDO!!!
//*************************************************
//Developed for EventManager, can be used anywhere
//Will get the HTML of the "URL" passed and will put that into the given "targetID" 
//"loaderImageURL" - path of .gif image to show while the ajax call
function GetPageHTML(targetID, url, loaderImageURL){
	document.getElementById(targetID).innerHTML='<table cellspacing="0" cellpadding="0" border="0" style="width:100%;height:100%;text-align:center;vertical-align:middle;"><tr><td align="center"><img src="' + loaderImageURL + '"/></td></td></table>';
	var xmlHttp = createXMLHttpObj();
	xmlHttp.onreadystatechange=function(){
		if(xmlHttp.readyState==4){
			/*if (xmlHttp.status != 200)  {//200=Success
				alert('xmlHttp.status'+xmlHttp.status);
			}*/
			try{//For IE
				//alert("xmlHttp.responseText- " + xmlHttp.responseText);
				var returnval=xmlHttp.responseText;
				document.getElementById(targetID).innerHTML = returnval;
			}
			catch(e){
				//ERROR
				document.getElementById(targetID).innerHTML="";
			}
		}
	}
	
	xmlHttp.open("POST", url, true);
	xmlHttp.send("");

}
function createXMLHttpObj(){
	var xmlHttpObj;
	try{  // Firefox, Opera 8.0+, Safari, IE 7
		xmlHttpObj = new XMLHttpRequest();
	}catch(e){  // Internet Explorer 6 or below
		try{
			xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				xmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				alert(e.message);
			}
		}
	}
	return xmlHttpObj
}
function createXMLobj(postXMLStr){
	var xmlDoc;
	try{ //Internet Explorer
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(postXMLStr);
	}catch(e){
		try {//Firefox, Mozilla, Opera, etc.
			var parser = new DOMParser();
			xmlDoc = parser.parseFromString(postXMLStr,"text/xml");
		}catch(e){
			alert(e.message);
		}
	}
	return xmlDoc;
}
//*************************************************

