﻿function openHelpPopup(page) {
    var w = 755;
    var h = 575;
    var winl = (screen.width-w)/2;
    var wint = (screen.height-h)/2;
    var settings ='height='+h+',';
    settings +='width='+w+',';
    settings +='top='+wint+',';
    settings +='left='+winl+',';
    settings +='scrollbars=no,';
    settings +='resizable=no';
    settings +='toolbar=no';
    settings+='status=no';
    settings+='menubar=no';
    settings += 'titlebar=no';
    childWindow=window.open(page,'location',settings);
    if(childWindow != null)
        childWindow.window.focus();
}

function openHelpPopupSmall(page,width,height) {
    var w = width;
    var h = height;
    var winl = (screen.width - w) / 2;
    var wint = (screen.height - h) / 2;
    var settings = 'height=' + h + ',';
    settings += 'width=' + w + ',';
    settings += 'top=' + wint + ',';
    settings += 'left=' + winl + ',';
    settings += 'scrollbars=no,';
    settings += 'resizable=no,';
    settings += 'toolbar=no,';
    settings += 'status=no,';
    settings += 'menubar=no,';
    settings += 'titlebar=no';
    childWindow = window.open(page, 'location', settings);
    if (childWindow != null)
        childWindow.window.focus();
}
function helpCancel()
{
    window.close();
}

var helpCategory;
var helpSubCategory;
var pleaseSelect = "Please Select...";
function InitDropdownCall_Back(val)
{
    var browsers = val;
}

var xmlGlbDoc;
function getXml()
{    
    var xmlDoc;
    var xmlPath = '../xml/HelpRequest.xml';
    try //Internet Explorer
    {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    }
    catch(e)
    {
        try
        {        
            xmlDoc=document.implementation.createDocument("","",null); //ff, etc
        }
        catch(e)
        {
            alert('Your browser can\'t handle this script');
        }
    }
    try
    {
       xmlDoc.async = false;
       xmlDoc.load(xmlPath);
    }
    catch(e) //This could be safari
    {
        try
        {
          var req = null;
          if (window.XMLHttpRequest) 
          { 
            req = new XMLHttpRequest(); 
            if(req != null)
            {
               req.open("GET", xmlPath, false);
               req.onreadystatechange = function(){if(req.readyState == 4){if(req.status == 200){ xmlDoc = req.responseXML;}}}
               req.setRequestHeader('Content-type','text/xml');
               req.send("");
            }
          } 
        }
        catch(e)
        {     
            alert(e.message);
        }
    }
    return xmlDoc;
}

function populateDropdowns()
{           
   var browsers = ['IE8','IE7','IE6', 'IE5', 'FIREFOX', 'SAFARI'];
   var browserNames = ['Internet Explorer 8','Internet Explorer 7','Internet Explorer 6','Internet Explorer 5','Firefox','Safari'];
   var os = ['WIN7', 'WINVISTA', 'WINXP', 'WIN2000', 'WIN98', 'WIN95', 'OSX10.6', 'OSX10.5', 'OSX10.4', 'OSX10.3'];
   var osNames = ['Windows 7', 'Windows Vista', 'Windows XP', 'Windows 2000', 'Windows 98', 'Windows 95', 'OS X 10.6', 'OS X 10.5', 'OS X 10.4', 'OS X 10.3']
   var helpOS = $get(helpOSID);
   var helpBrowser = $get(helpBrowserID);
   
   helpOS.options.length = 0;
   helpBrowser.options.length = 0;
   helpOS.options[0] = new Option(pleaseSelect,'');
   helpBrowser.options[0] = new Option(pleaseSelect,'');
 
   for(var i = 0; i < browsers.length; i++)
   {
       helpBrowser.options[i+1] = new Option(browserNames[i],browsers[i]);
   }
   for(var i = 0; i < os.length; i++)
   {
      helpOS.options[i+1] = new Option(osNames[i],os[i]);
   }
   xmlGlbDoc = getXml();
   helpCategory.options[0] = new Option(pleaseSelect,'');
   helpSubCategory.options[0] = new Option(pleaseSelect,'');

   if(xmlGlbDoc != null && typeof(xmlGlbDoc) != 'undefined')
   {
       var categories = xmlGlbDoc.getElementsByTagName('CategoryItem');
       var j = 0;
       for(var i = 0; i < categories.length; i++)
       {
          var enabled = categories[i].getAttribute('enabled');
          if (enabled.toUpperCase() == 'TRUE') {
          	j++;
          	var id = categories[i].getAttribute('id');
          	var name = categories[i].getAttribute('name');
          	helpCategory.options[j] = new Option(name, id);
          }
       }
   }
  
   var subCategoryNode =  getXmlNodeById('EU-AP');
   if(subCategoryNode != null)
   {
        
   }
   firefoxModalPopupfix();

   helpSubCategory.onchange = function() {
			if (this.selectedIndex < _SubCategoryOptions.length && _SubCategoryOptions[this.selectedIndex])
   				DisplayAnswer(_SubCategoryOptions[this.selectedIndex].ReadOnly, 
   						      _SubCategoryOptions[this.selectedIndex].Message);
   			else
   				ClearAnswer();
 			validatePage();
		}
}
function ClearAnswer() {
	DisplayAnswer(false, "");
	if ($find(PopUpHelpRequestID))
		$find(PopUpHelpRequestID)._layout();
}
function DisplayAnswer(readOnly, msg) {
	$get(AnswerID).innerHTML = msg;
	$get(AnswerContainerID).style.display = readOnly ? '' : 'none';
	$get(MessageContainerID).style.display = readOnly ? 'none' : '';
	$get(SubmitLinkID).style.display = readOnly ? 'none' : '';
	if ($find(PopUpHelpRequestID))
		$find(PopUpHelpRequestID)._layout();
}
var _SubCategoryOptions = [{ ReadOnly: false, HighPriority: 'false', Message: ''}];
function getCategorySubItems(sender, onload) 
{
	ClearAnswer();
    var categories = sender;
    delete _SubCategoryOptions;
    _SubCategoryOptions = [];
    if(categories[categories.selectedIndex].value != '')
    {
        if(categories != null && categories.length != 0)
        {
           var nodeId =  categories[categories.selectedIndex].value;
           var subNode = getXmlNodeById(nodeId);
           var subCategories = subNode.getElementsByTagName('SubCategoryItem');
           helpSubCategory.length = 0;
           helpSubCategory.options[0] = new Option(pleaseSelect,'');
           _SubCategoryOptions[j] = { ReadOnly: false, HighPriority: "", Message: "" };
           var j = 0;
           for(var i = 0; i < subCategories.length; i++)
           {
           		var enabled = subCategories[i].getAttribute('enabled').toUpperCase() == 'TRUE';
           		var id = subCategories[i].getAttribute('id');
           		var name = subCategories[i].getAttribute('name');
           		var highPriority = subCategories[i].getAttribute('highPriority');
           		var answer = subCategories[i].getElementsByTagName('Answer');
           		var message = "";

           		if (!enabled && answer && answer.length > 0) {
           			if (BrowserIsIE()) {
           				message = answer[0].firstChild.xml;
           			} else if (answer[0].childElementCount > 0) {
           				var div = document.createElement("div");
           				div.appendChild(answer[0].firstElementChild.cloneNode(true));
           				message = div.innerHTML;
           			}
           		}

           		j++;
           		helpSubCategory.options[j] = new Option(name, id);
           		_SubCategoryOptions[j] = { ReadOnly: !enabled, HighPriority: highPriority, Message: message };
           }            
        }
    }
    if (!onload)
        validatePage();
}   

function validatePage()
{
    try
    {
     if(Page_ClientValidate('HelpRequest'))
        $get('divValidation').style.display = 'none';
     else
        $get('divValidation').style.display = '';
     }
     catch(e){}
     
}
function getXmlNodeById(nodeId) 
{
    var node_tags = xmlGlbDoc.getElementsByTagName('CategoryItem');
    for (i=0;i<node_tags.length;i++) 
    {
        if (node_tags[i].getAttribute('id') == nodeId) 
            return node_tags[i];
     }
     return null;
 }
 var xml;
 function buildXml()
 {
    //var retailerid = '<%=RetailerID %>';
    crmfilingemail = 'helprequest@photochannel.com';
    var contactid = '';
    var firstname = $get(helpFirstNameID).value;
    var lastname = $get(helpLastnameID).value;
    var email = $get(helpEmailID).value;
    var helpOS = $get(helpOSID);
    var os  = helpOS[helpOS.selectedIndex].value;
    var helpBrowser = $get(helpBrowserID);
    var browser  = helpBrowser[helpBrowser.selectedIndex].value;
    var helpCategory = $get(helpCategoryID);
    var helpSubCategory = $get(helpSubCategoryID);
    var category = helpCategory[helpCategory.selectedIndex].value;
    var subcategory = helpSubCategory[helpSubCategory.selectedIndex].value;
    var notes = $get(helpMessageID).value;
    var orderNum = $get(helpOrderNumberID).value;
    var phone   = $get(helpPhoneID).value;
    var highPriority = _SubCategoryOptions[helpSubCategory.selectedIndex].HighPriority;
    if(highPriority.toUpperCase() == 'False')
        priority = 'Normal';
    else
        priority = 'High';
    if(crmfilingemail.trim() == '')
        crmfilingemail = email;
    var sb = new Sys.StringBuilder();
    //sb.append('<helprequest>');
    sb.append('CRM Filing Email: ');sb.append(crmfilingemail);sb.append('\r\n');
    sb.append('RetailerID: ');sb.append(retailerid);sb.append('\r\n');
    sb.append('ContactID: ');sb.append(contactid);sb.append('\r\n');
    sb.append('First Name: ');sb.append(firstname);sb.append('\r\n');
    sb.append('Last Name: ');sb.append(lastname);sb.append('\r\n');
    sb.append('Email: ');sb.append(email);sb.append('\r\n');
    sb.append('OS: ');sb.append(os);sb.append('\r\n');
    sb.append('Browser: ');sb.append(browser);sb.append('\r\n');
    sb.append('Category: ');sb.append(category);sb.append('\r\n');
    sb.append('Sub Category: ');sb.append(subcategory);sb.append('\r\n');
    sb.append('Notes: ');sb.append(notes);sb.append('\r\n');
    sb.append('Type: ');sb.append('EndUser');sb.append('\r\n');
    sb.append('Source: ');sb.append('Web');sb.append('\r\n');
    sb.append('Language: ');sb.append('English');sb.append('\r\n');
    sb.append('Ordernum: ');sb.append(orderNum);sb.append('\r\n');
    sb.append('Phone: ');sb.append(phone);sb.append('\r\n');
    sb.append('Priority: ');sb.append(priority);sb.append('\r\n');
    //sb.append('</helprequest>');
    
    return sb.toString();
 }
 function sendXml()
 {
    //if (!clicked)
    //{
        if(!Page_ClientValidate('HelpRequest'))
        {
            //$get('divValidation').style.display = '';
            return;
        }
        else
        {
            //$get('divValidation').style.display = 'none';
            clicked = true;
            var xml = buildXml();
            var emailAddress = $get(helpEmailID).value;
            
            helpService.SendXml(xml, emailAddress, sendXml_Callback, gotError);
        }
    //}
 }
 function sendXml_Callback(result) {
     if (result) {
         if (typeof (PopUpHelpRequestID) != 'undefined' && PopUpHelpRequestID != null) {
             $find(PopUpHelpRequestID).hide();
             ShowPopUp(PopHelpRequestSubmittedID); // sendStatus.style.display = '';
         }
         else {
             if (helpPopup != null)
                 helpPopup.hide();
             if (popHelpRequestSubmitted != null)
                 popHelpRequestSubmitted.show();
         }
         clearForm();

     }
     else {

     }
 }

 function gotError(error, ctx, methodName) {
     if (error) {
         var errStatus = error.get_statusCode();

         switch (errStatus) {
             case 12002: // IE The request has timed out.
                 {
                     // ignore                
                     break;
                 }
             case 12030: // IE The connection with the server has been terminated.
             case 12031: // IE The connection with the server has been reset.            
             case 401:   // HTTP 401 Unauthorized
                 {
                     alert("Authentication Failed. Please click OK to proceed to login page.");
                     document.location = RootUrl;
                     break;
                 }
             default:
                 {
                     var nl = "\r\n";
                     var message =
                                "Method Name: " + methodName + nl + nl +
                                "Status Code: " + error.get_statusCode() + nl + nl +
                                "Error: " + error.get_message() + nl + nl +
                                "Exception Type: " + error.get_exceptionType() + nl + nl +
                                "Stack Trace: " + error.get_stackTrace() + nl;

                     if (typeof masterService != 'undefined') {
                         masterService.LogError(message, Redirect, gotError);
                     } else {
                         document.location = RootUrl + "error.aspx";
                     }
                     break;
                 }
         }
     }
 }
 
 
 function clearForm()
 {
     $get(helpFirstNameID).value = "";
     $get(helpLastnameID).value = "";
     $get(helpEmailID).value = "";
     var helpOS = $get(helpOSID);
     helpOS.selectedIndex = 0;
     $get(helpBrowserID).selectedIndex = 0;
     $get(helpCategoryID).selectedIndex = 0;
     $get(helpSubCategoryID).selectedIndex = 0;
     $get(helpMessageID).value = "";
     $get(helpOrderNumberID).value = "";
     $get(helpPhoneID).value = "";
 }
 function getOS()
 {
    var userAgent = navigator.userAgent.toLowerCase();
    userAgent = userAgent.toString();
    if (userAgent.indexOf("windows nt 6.1") > -1)
    	return "WIN7";
    else if (userAgent.indexOf("windows nt 6.0") > -1)
    	return "WINVISTA";
    else if (userAgent.indexOf("windows nt 5.1") > -1)
    	return "WINXP";
    else if (userAgent.indexOf("windows nt 5") > -1)
    	return "WIN2000";
    else if (userAgent.indexOf("98") > -1)
    	return "WIN98";
    else if (userAgent.indexOf("95") > -1)
    	return "WIN95";
    else if (userAgent.indexOf("linux") > -1)
    	return "Linux";
    else if (userAgent.indexOf("x11") > -1)
    	return "Unix";
    else if (userAgent.indexOf("os x") > -1)
		return "OSX10.6";
    else
    	return "";
    
 }
 function getBrowser()
 {
    // Note: On IE5, these return 4, so use is_ie5up to detect IE5.
    var is_major = parseInt(navigator.appVersion);
    var is_minor = parseFloat(navigator.appVersion);
    
    var agt = navigator.userAgent.toLowerCase();
    var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    var is_ie3    = (is_ie && (is_major < 4));
    var is_ie4    = (is_ie && (is_major == 4) && (agt.indexOf("msie 4")!=-1) );
    var is_ie4up  = (is_ie && (is_major >= 4));
    var is_ie5    = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    var is_ie5_5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.5") !=-1));
    var is_ie5up  = (is_ie && !is_ie3 && !is_ie4);
    var is_ie5_5up =(is_ie && !is_ie3 && !is_ie4 && !is_ie5);
    var is_ie6    = (is_ie && (is_major == 4) && (agt.indexOf("msie 6.")!=-1) );
    var is_ie6up  = (is_ie && !is_ie3 && !is_ie4 && !is_ie5 && !is_ie5_5);
    var is_ie7    = (is_ie && agt.indexOf("msie 7.0") != -1);
    var is_ie8 = (is_ie && agt.indexOf("msie 8.0") != -1);	
    
    if(is_ie5 || is_ie5_5)
        return "IE5";
    else if(is_ie6)
        return "IE6"
    else if(is_ie7)
        return "IE7";
    else if (is_ie8)
        return "IE8";
    else if (Sys.Browser.agent == Sys.Browser.Firefox)
        return "FIREFOX";
    else if(Sys.Browser.agent == Sys.Browser.Safari)
        return "SAFARI";
    else if(Sys.Browser.agent == Sys.Browser.Opera)
        return "OPERA";
    else
        return "";
 }
 function selectDefaults()
 {
    var os = getOS();
    var browser = getBrowser();
    selectfromDropdown(helpOS,os);
    selectfromDropdown(helpBrowser,browser);
 }
 function selectfromDropdown(dropDown, value)
 {
    for(var i = 0; i < dropDown.options.length; i++)
    {
        var val = dropDown[i].value.toLowerCase();
        if(value.toLowerCase() == val)
        {
            dropDown.selectedIndex = i;
            break;
        }
    }
 }
function firefoxModalPopupfix()
{
   if(Sys.Browser.agent == Sys.Browser.Firefox)
   {           
       var inputs = document.getElementsByTagName('input');
       for(var i = 0; i < inputs.length; i++)
       {
          var input = inputs[i];
          if(input.type == 'text' || input.type == 'textarea')
          { 
            input.onfocus = function(){this.className = 'modalHighlight';}
            input.onblur = function(){this.className = '';}
          }
       }
       $get(helpMessageID).onfocus = function(){this.className = 'modalHighlight';}
       $get(helpMessageID).onblur = function(){this.className = '';}
   }
}